class A
{
public:
    A(int){} // 定义了带参数的构造函数，则默认构造函数不会生成
};

class B
{
public:
    B(int){}
    B() = default;
};

class C
{

};

class D
{
public:
    D() = delete;
};

int main()
{
    // A a;     // error,没有A::A()
    B b;        // ok, 由default生成默认构造函数
    C c;        // ok, 生成默认构造函数
    // D d;     // error, delete可删除指定的构造函数
}